package com.qqbot.schedule;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

/**
 * @PackageName : com.eezi.app.schedule
 * @Author : wenwu.cai
 * @Date : 2022/4/12 2:47 下午
 * @Description : 订单超时自定关闭；由于CommandLineRunner自身限制，一个项目中只能有一个Runner
 * 每个Runner里都通过while(true)加上阻塞队列来等待接收待处理的数据，这样当第一个Runner的run()方法被调用后，就会一致等待阻塞队列里有新数据，然后继续执行后续更新操作，然后再次进入等待状态，所以，另一个Runner就一致不会被执行。
 * <p>
 * 解决方式：采用多线程的方式执行多个需要采用延迟队列的业务
 **/
@Component
public class AsyncRunner implements CommandLineRunner {

    @Autowired
    private AsyncService asyncService;

    @Override
    public void run(String... args) throws Exception {
        //狼人
        asyncService.wolfKillMessage();
        //预言家
        asyncService.prophetMessage();
        //女巫
        asyncService.witchMessage();
    }

}
